#ifndef AST_EXPRESSION_EXCLUSIVE_OR_EXPR_H
#define AST_EXPRESSION_EXCLUSIVE_OR_EXPR_H

#include "../ASTNode.h"

class AndExpr;

/*
C99 6.5.11
exclusive-OR-expression:
		AND-expression
		exclusive-OR-expression    ^    AND-expression
*/
class ExclusiveORExpr : public ASTNode
{
protected:
	ExclusiveORExpr(void)
		:ASTNode(ASTNode::exclusive_OR_expression){};
public:
	ExclusiveORExpr(AndExpr *pSingleExpr)
		: ASTNode(ASTNode::exclusive_OR_expression)
		, m_pAndExpr(pSingleExpr)
		, m_pExORExpr(NULL){};
	ExclusiveORExpr(ExclusiveORExpr *pExORExpr, AndExpr *pAndExpr)
		: ASTNode(ASTNode::exclusive_OR_expression)
		, m_pAndExpr(pAndExpr)
		, m_pExORExpr(pExORExpr){};


	virtual ~ExclusiveORExpr(void);

	virtual void					codeGen();

protected:
	AndExpr *						m_pAndExpr;
	ExclusiveORExpr *				m_pExORExpr;
};


#endif


